home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 3 / Cream of the Crop 3.iso / comm / 0141ter2.zip / 0141TER2._XE / PASCAL.EXE / TEXT_XLT.PAS < prev    next >
Pascal/Delphi Source File  |  1993-06-07  |  2KB  |  79 lines

  1. Uses Dos;
  2.  
  3. Var
  4.   FromF, ToF, F          : File;
  5.   TableNote              : String[54];
  6.   InTable, OutTable      : Array[0..255] of Byte;
  7.   X, NumRead, NumWritten : Word;
  8.   Buf                    : array[1..32768] of Byte;
  9.   UseIn                  : Boolean;
  10.   EraseAfter             : Boolean;
  11.  
  12. Function UpStr(s:String):String;
  13. Var i : byte;
  14. Begin
  15.   for i := 1 to Length(s) do s[i] := UpCase(s[i]);
  16.   upstr:=s;
  17. End;
  18.  
  19. Begin
  20.   WriteLn('Translate documents using Terminate XLT files');
  21.   If ParamCount<3 Then
  22.   Begin
  23.     WriteLn(#10'Syntax: TEXT_XLT xlt-file file-to-convert in/out [erase]');
  24.     WriteLn('        TEXT_XLT ISOLAT-1.XLT TEST.TXT IN');
  25.     WriteLn('        TEXT_XLT DK-7BIT.XLT TEST.TXT OUT ERASE');
  26.     WriteLn(#10'Erase will delete the original file and rename the new file back');
  27.     Halt;
  28.   End;
  29.  
  30.   EraseAfter:=False; If UpStr(Paramstr(4))='ERASE' Then EraseAfter:=True;
  31.  
  32.   UseIn:=True; If UpStr(Paramstr(3))='OUT' Then UseIn:=False;
  33.  
  34.   Assign(F,Paramstr(1));
  35.   {$I-} Reset(F,1); {$I+}
  36.   If IOResult=0 Then
  37.   Begin
  38.     BlockRead(F,TableNote,Sizeof(TableNote));
  39.     WriteLn('Table: '+TableNote);
  40.     BlockRead(F,InTable,256);
  41.     BlockRead(F,OutTable,256);
  42.     {$I-} Close(F); {$I+}
  43.   End
  44.   Else Begin
  45.     WriteLn('Could not open '+Paramstr(1));
  46.     Halt;
  47.   End;
  48.  
  49.   WriteLn('Comment: '+TableNote);
  50.  
  51.   Assign(FromF, ParamStr(2));   Reset(FromF, 1);
  52.   Assign(ToF, 'TEXT_XLT.TXT');  Rewrite(ToF, 1);
  53.  
  54.   If UseIn Then WriteLn('Using incoming table')
  55.   Else WriteLn('Using outgoing table');
  56.  
  57.   Writeln('Converting ', FileSize(FromF), ' bytes...');
  58.   repeat
  59.     BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
  60.     If UseIn Then
  61.       For x:=1 to NumRead Do Buf[x]:=InTable[Buf[x]]
  62.     Else
  63.       For x:=1 to NumRead Do Buf[x]:=OutTable[Buf[x]];
  64.     BlockWrite(ToF, Buf, NumRead, NumWritten);
  65.   until (NumRead = 0) or (NumWritten <> NumRead);
  66.  
  67.   Close(FromF);
  68.   Close(ToF);
  69.  
  70.   If EraseAfter Then
  71.   Begin
  72.     Erase(FromF);
  73.     Rename(ToF,ParamStr(2));
  74.     WriteLn(ParamStr(2)+' has been converted');
  75.   End
  76.   Else WriteLn('TEXT_XLT.TXT created');
  77.  
  78. End.
  79.